package com.ebt.m.utils;

import android.text.TextUtils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class InputCheckUtil {
    /**
     * 输入项trim后是否为空
     *
     * @param input
     * @return
     */
    public static boolean isEmptyAfterTrim(String input) {
        if (TextUtils.isEmpty(input)) {
            return true;
        } else {
            if (TextUtils.isEmpty(input.trim())) {
                return true;
            } else {
                return false;
            }
        }
    }

    /**
     * 去除字符串开头的空格、回车、换行符、制表符
     *
     * @param str
     * @return 注：\n 回车(u000a)
     * <p>
     * \t 水平制表符(u0009)
     * <p>
     * \s 空格(u0008)
     * <p>
     * \r 换行 )
     */
    public static String replaceBlankAtStart(String str) {
        Pattern p = Pattern.compile("^\\s*");
        Matcher m = p.matcher(str);
        String after = m.replaceAll("");
        return after;
    }


    /**
     * 去除字符串中的空格、回车、换行符、制表符
     *
     * @param str
     * @return 注：\n 回车(u000a)
     * <p>
     * \t 水平制表符(u0009)
     * <p>
     * \s 空格(u0008)
     * <p>
     * \r 换行 )
     */
    public static String replaceBlank(String str) {
        Pattern p = Pattern.compile("\\s*|\t|\r|\n");
        Matcher m = p.matcher(str);
        String after = m.replaceAll("");
        return after;
    }

    /**
     * 去除字符串中的回车、换行符
     *
     * @param str
     * @return 注：\n 回车(u000a)
     * <p>
     * \t 水平制表符(u0009)
     * <p>
     * \s 空格(u0008)
     * <p>
     * \r 换行 )
     */
    public static String removeBlankNr(String str) {
        Pattern p = Pattern.compile("\\r|\n");
        Matcher m = p.matcher(str);
        String after = m.replaceAll("");
        return after;
    }

    /**
     * \r转义字符变成字符串\\r.
     * 变成正则表达式\\\\r
     *
     * @param str
     * @return
     */
    public static String replaceBr(String str) {
        Pattern p = Pattern.compile("\\\\r\\\\n|\\\\n|\\\\r");
        Matcher m = p.matcher(str);
        String after = m.replaceAll("<br/>");
        return after;
    }

    /**
     * 替换字符串\"成字符串\\\".在js中使用。解决文字中出现“罩”这种问题。
     *
     * @param str
     * @return 类比法：java中\n表示转义n代表换行，\"表示转义"代表普通字符串"。\\代表转义\，表示普通字符串\.
     * 所以字符串\",用java表示就是\\\"。
     * 字符串\\\"用java表示就是\\\\\\\"
     */
    public static String replaceXiexianYinhao(String str) {
        return str.replace("\\\"", "\\\\\\\"");
    }

    /**
     * 替换引号
     *
     * @param str
     * @return
     */
    public static String replaceQuotAndApos(String str) {
        return str.replace("\"", "&quot;").replace("'", "&apos;");
    }

    /**
     * 替换字符串中的回车\n、换行符\r为html的换行<br/>
     * 1.字符串
     * 2.\n中\是转义字符
     * 3.把转义字符\变成字符串加\\n。
     *
     * @param str
     * @return 注： \n 回车(u000a) \r 换行(u000d)
     */
    public static String replaceBr1(String str) {
        return str.replace("\\n", "<br/>").replace("\\r", "<br/>");
    }

    /**
     * 替换字符串中的回车、换行符为html的换行<br/>
     *
     * @param str
     * @return 注： \n 回车(u000a) \r 换行(u000d)
     */
    public static String replaceBr2(String str) {
        return str.replaceAll("\\\\n|\\\\r", "<br/>");
    }

    /**
     * @param tel
     * @return
     */
    public static boolean phoneCheck(String tel) {
        String mobile = "^[1][3-9]\\d{9}$";
        Pattern pattern = Pattern.compile(mobile);
        Matcher matcher = pattern.matcher(tel);
        if (matcher.matches()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * email格式
     *
     * @param email
     * @return
     */
    public static boolean emailCheck(String email) {
        String mail = "^\\w+([-+.]\\w+)*@[\\w-]+(\\.[\\w-]+)+$";
        Pattern pattern = Pattern.compile(mail);
        Matcher matcher = pattern.matcher(email);
        if (matcher.matches()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 包含字母大小写、数字。8-12位
     * @param password
     * @return
     */
    public static boolean passwordCheck(String password) {
        String rule = "[a-zA-Z0-9]{8,12}";
        Pattern pattern = Pattern.compile(rule);
        Matcher matcher = pattern.matcher(password);
        return matcher.matches();
    }


    /**
     * 只能包含字母（26个）和数字（10个）
     * \w匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。
     * \W匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
     *
     * @param str
     * @return
     */
    public static boolean onlyContainsLetterAndNum(String str) {
        String rule = "[a-zA-Z0-9]+";
        Pattern pattern = Pattern.compile(rule);
        Matcher matcher = pattern.matcher(str);
        if (matcher.matches()) {
            return true;
        } else {
            return false;
        }
    }


    /**
     * 以字母开头，后面的是任意字符0次或多次
     *
     * @param text
     * @return \s匹配任何空白字符，包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。 \S匹配任何非空白字符。等价于[^
     * \f\n\r\t\v]。
     */
    public static boolean startWithLetter(String text) {
        String rule = "^[a-zA-Z]\\S*";
        Pattern pattern = Pattern.compile(rule);
        Matcher matcher = pattern.matcher(text);
        if (matcher.matches()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 包含数字
     *
     * @param text
     * @return
     */
    public static boolean containsDigital(String text) {
        String rule = "\\S*\\d\\S*";
        Pattern pattern = Pattern.compile(rule);
        Matcher matcher = pattern.matcher(text);
        if (matcher.matches()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 包含数字
     *
     * @param text
     * @return
     */
    public static boolean containsLetter(String text) {
        String rule = "\\S*[a-zA-Z]\\S*";
        Pattern pattern = Pattern.compile(rule);
        Matcher matcher = pattern.matcher(text);
        if (matcher.matches()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 姓名校验
     * 仅包含中文和英文
     *
     * @param text
     * @return
     */
    public static boolean nameCheck(String text) {
        String rule = "[a-zA-Z\\u4E00-\\u9FA5]+";
        Pattern pattern = Pattern.compile(rule);
        Matcher matcher = pattern.matcher(text);
        if (matcher.matches()) {
            return true;
        } else {
            return false;
        }
    }
}